package com.ly.lypicturebackend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ly.lypicturebackend.model.dto.space.Analyze.*;
import com.ly.lypicturebackend.model.entity.Space;
import com.ly.lypicturebackend.model.entity.User;

import java.util.List;

/**
 * @author zzz
 * @description 针对表【space(空间)】的数据库操作Service
 * @createDate 2025-02-21 13:01:32
 */
public interface SpaceAnalyzeService extends IService<Space> {
    /**
     * 获取空间使用情况分析结果
     *
     * @param spaceUsageAnalyzeRequest 空间使用情况分析请求对象
     * @param loginUser                当前登录用户对象
     * @return 空间使用情况分析响应对象
     */
    SpaceUsageAnalyzeResponse getSpaceUsageAnalyze(SpaceUsageAnalyzeRequest spaceUsageAnalyzeRequest, User loginUser);

    /**
     * 获取空间类别使用分析
     *
     * @param spaceCategoryAnalyzeRequest 空间类别使用分析请求对象
     * @param loginUser                    登录用户对象
     * @return SpaceCategoryAnalyzeResponse 空间类别使用分析响应对象列表
     */
    List<SpaceCategoryAnalyzeResponse> getSpaceCategoryAnalyze(SpaceCategoryAnalyzeRequest spaceCategoryAnalyzeRequest, User loginUser);

    /**
     * 获取空间标签分析结果
     *
     * @param spaceTagAnalyzeRequest 空间标签分析请求参数
     * @param loginUser               当前登录用户
     * @return 空间标签分析结果列表
     */
    List<SpaceTagAnalyzeResponse> getSpaceTagAnalyze(SpaceTagAnalyzeRequest spaceTagAnalyzeRequest, User loginUser);

    /**
     * 获取空间大小分析结果
     *
     * @param spaceSizeAnalyzeRequest 空间大小分析请求参数
     * @param loginUser                当前登录用户
     * @return 空间大小分析结果列表
     */
    List<SpaceSizeAnalyzeResponse> getSpaceSizeAnalyze(SpaceSizeAnalyzeRequest spaceSizeAnalyzeRequest, User loginUser);

    /**
     * 获取用户类别使用分析
     *
     * @param spaceUserAnalyzeRequest 空间用户分析请求对象
     * @param loginUser                登录用户对象
     * @return 用户类别使用分析列表
     */
    List<SpaceUserAnalyzeResponse> getSpaceUserAnalyze(SpaceUserAnalyzeRequest spaceUserAnalyzeRequest, User loginUser);

    /**
     * 获取空间排名分析结果
     *
     * @param spaceRankAnalyzeRequest 空间排名分析请求对象
     * @param loginUser               登录用户对象
     * @return 空间列表
     */
    List<Space> getSpaceRankAnalyze(SpaceRankAnalyzeRequest spaceRankAnalyzeRequest, User loginUser);


}
